Add step for publishing to MCP Registry#1197
Conversation
Skn0tt
left a comment
There was a problem hiding this comment.
Thanks! Left a couple of comments from a first cursory look.
|
I setup a Keyvault and key, and populated the |
yury-s
left a comment
There was a problem hiding this comment.
Can you update the PR description as we don't commit go-install.ps1 anymore and some vars have changed?
|
@yury-s, thanks for the approval. Any input on this point?
|
|
Currently the public key is not declared on |
Can you cc me as well, I may be able to do it earlier?
I guess you wan to give it try without waiting for the next mcp release. We can allow it to run on |
This adds a new step for the `release` event to publish to the Official MCP Registry. Summary of changes: - Add `server.json` which is the MCP Server manifest - Used metadata from the GH MCP Registry - Used the name `com.microsoft/playwright-mcp` - Add `publish-release-mcp-registry` job that runs manually - Install Microsoft Go for compliant Go crypto - Log in to Azure for Key Vault access - Publish to the MCP Registry in the `microsoft.com` namespace. - Add `mcpName` to the `package.json` which the MCP Registry validates. The publishing requires some secret variables: - `AZURE_MCP_REGISTRY_CLIENT_ID` - service principal client ID (app ID) with Get Key and Sign access to a Key Vault - `AZURE_MCP_REGISTRY_TENANT_ID` - tenant ID for the service principal (should be a production tenant) - `AZURE_MCP_REGISTRY_SUBSCRIPTION_ID` - Azure subscription ID holding the Key Vault - `KV_NAME` - the Key Vault name, e.g. `mykeyvault` - `KV_KEY_NAME` - the name of a Key in the Key Vault, needs to be ECDSA P-384. I can provide internal documentation for how to set up the service principal (managed identity is easiest), vault, and key as well as registering the key so it can be used for the `microsoft.com` namespace. **Note:** after the new job is proven to work as expected, we can switch it to automatically running after the `publish-release-npm` job on the `release` event.
## Summary - Adds `server.json` declaring the npm and OCI packages under the `io.github.microsoft/playwright-mcp` namespace (already claimed via `mcpName` in `package.json`). - Adds a `publish-mcp-release-registry` job to `publish.yml` that runs after the npm release, auto-syncs `server.json`'s version from `package.json`, and publishes via `mcp-publisher` using GitHub OIDC (no PAT needed). - Unblocks enterprise users on `registryOnly` MCP policies (e.g. VS Code + Copilot in security-hardened setups) by listing `@playwright/mcp` in the official registry. Fixes #1477 ## Precedent [microsoft/mcp-dotnet-samples](https://github.com/microsoft/mcp-dotnet-samples/blob/main/.github/workflows/build-container.yaml) publishes `io.github.microsoft/awesome-copilot` to the registry from an hourly cron using the exact same flow (`id-token: write` + curl-fetched `mcp-publisher` + `login github-oidc`). It's been running successfully for weeks, so the GitHub-OIDC path is confirmed to work under `microsoft/*` corp policy — no DNS / Key Vault setup needed (unlike the reverted #1197 attempt that used the `com.microsoft/...` namespace). ## Notes - `server.json`'s committed version is just a placeholder; the workflow rewrites it from `package.json` before publish, so future `chore: mark vX.Y.Z` commits don't need to touch `server.json`. - First release after merge is the live test — no dry-run path.
This adds a new step for the
releaseevent to publish to the Official MCP Registry.Summary of changes:
server.jsonwhich is the MCP Server manifestcom.microsoft/playwright-mcppublish-release-mcp-registryjob that runs manuallymicrosoft.comnamespace.mcpNameto thepackage.jsonwhich the MCP Registry validates.The publishing requires some secret variables:
AZURE_MCP_REGISTRY_CLIENT_ID- service principal client ID (app ID) with Get Key and Sign access to a Key VaultAZURE_MCP_REGISTRY_TENANT_ID- tenant ID for the service principal (should be a production tenant)AZURE_MCP_REGISTRY_SUBSCRIPTION_ID- Azure subscription ID holding the Key VaultKV_NAME- the Key Vault name, e.g.mykeyvaultKV_KEY_NAME- the name of a Key in the Key Vault, needs to be ECDSA P-384.I can provide internal documentation for how to set up the service principal (managed identity is easiest), vault, and key as well as registering the key so it can be used for the
microsoft.comnamespace.Note: after the new job is proven to work as expected, we can switch it to automatically running after the
publish-release-npmjob on thereleaseevent.